/**
* @description: TODO (描述这个文件的作用) 
* Project Name:creditcat-service, File Name:ProductEnumService.java 
* Copyright (c) 2017, 张新功,Inc.All Rights Reserved.
*/

package com.vcredit.creditcat.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import com.vcredit.creditcat.model.ProductEnum;
import com.vcredit.creditcat.persistence.base.ProductEnumMapper;


/**
* @description: TODO(描述这个类的作用)
* @author 张新功
* @date 2017年7月14日
*/
@Service
public class ProductEnumService {
  @Autowired
  private ProductEnumMapper productEnumMapper;

  @CacheEvict(key = "'ProductEnum'", value = "productenum")
  public void insert(ProductEnum productEnum) {
    productEnumMapper.insert(productEnum);
  }

  @CacheEvict(key = "'ProductEnum'", value = "productenum")
  public void update(ProductEnum productEnum) {
    productEnumMapper.update(productEnum);
  }

  public List<ProductEnum> findAllList() {
    List<ProductEnum> productEnums = new ArrayList<ProductEnum>();
    Map<Long, ProductEnum> map = this.findAll();
    for (Entry<Long, ProductEnum> entry : map.entrySet()) {
      productEnums.add(entry.getValue());
    }
    return productEnums;
  }

  @Cacheable(key = "'ProductEnum'", value = "productenum")
  public Map<Long, ProductEnum> findAll() {
    Map<Long, ProductEnum> productEnums = new HashMap<Long, ProductEnum>();
    for (ProductEnum product : productEnumMapper.findAll()) {
      productEnums.put(product.getEnumId(), product);
    }
    return productEnums;
  }

  @SuppressWarnings("unused")
  private List<ProductEnum> find(ProductEnum obj) {
    return productEnumMapper.find(obj);
  }

  public ProductEnum findById(Long productId) {
    return this.findAll().get(productId);
  }

}
